1

1.初始化wepy项目

  • 安装脚手架

    • npm install -g wepy-cli
    • wepy init standard my-project
    • 切换至项目目录

      • 初始化项目 npm install
    • 开启实时编译

      • wepy build --watch

2.小程序生命周期

onLoad: 页面加载
    一个页面只会调用一次。
    接收页面参数   可以获取wx.navigateTo和wx.redirectTo及<navigator/>中的 query。

onShow: 页面显示
    每次打开页面都会调用一次。

onReady: 页面初次渲染完成
    一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。

onHide: 页面隐藏
    当navigateTo或底部tab切换时调用。

onUnload: 页面卸载
    当redirectTo或navigateBack的时候调用。    

3 原生小程序要求app实例必须有3个文件:app.js、app.json、app.wxss,而page页面则一般有4个文件:page.js、page.json、page.wxml、page.wxss


project
└── src
    ├── pages
    |   ├── index.wpy    index 页面逻辑、配置、结构、样式
    |   └── log.wpy      log 页面逻辑、配置、结构、样式
    └──app.wpy  

也就是app.wpy 主要是做入口文件,pages是页面集成

import wepy from 'wepy';

// 声明一个App小程序实例,小程序入口文件 
export default class MyAPP extends wepy.app {
}

// 声明一个Page页面实例,小程序页面
export default class IndexPage extends wepy.page {
}

// 声明一个Component组件实例,开发小程序组件
export default class MyComponent extends wepy.component {
}

4 组件化。类似VUE组件文件的编写

1.我们需要了解父子组件如何传值 属性值可以使用props 来传值。子组件用props来接收值。

Vue.component('blog-post', {
  props: ['title'],
  template: '<h3>{{ title }}</h3>'
})

new Vue({
  el: '#blog-post-demo',
  data: {
    posts: [
      { id: 1, title: 'My journey with Vue' },
      { id: 2, title: 'Blogging with Vue' },
      { id: 3, title: 'Why Vue is so fun' }
    ]
  }
})

<blog-post
  v-for="post in posts"
  v-bind:key="post.id"
  v-bind:title="post.title"
></blog-post>

组件的事件,可以使用 $emit 来触发父组件上的方法!

5.在组件上使用 v-model

当用在组件上时,v-model 则会这样:

<custom-input
  v-bind:value="searchText"
  v-on:input="searchText = $event"
></custom-input>

为了让它正常工作,这个组件内的 <input> 必须:

 - 将其 value 特性绑定到一个名叫 value 的 prop 上
 - 在其 input 事件被触发时,将新的值通过自定义的 input 事件抛 
Vue.component('custom-input', {
  props: ['value'],
  template: `
    <input
      v-bind:value="value"
      v-on:input="$emit('input', $event.target.value)"
    >
  `
})

在vue里面还提出了动态组件的概念 keep-alive,相当于是保留了当前组件的状态。参考资料

6. 通过插槽分发内容

<a
  v-bind:href="url"
  class="nav-link"
>
  <slot></slot>
</a>

我理解的就是slot就是dom的插槽,就是把dom元素放在固定的位置。

7 wepy常用API

  • this.$apply() 动态改变数据,重新渲染。
  • $invoke("组件路径",“组件对应的方法”)
  • 路由的应用 this.$root.navigation({url:'.....'})
  • showtoast 调起toast 提示框

木子喵
492 声望26 粉丝

too young, too naive